#include <sqlite3.h>
#include <stdio.h>

int callback(void *, int, char **, char **);

/*
	功能：
			在此示例中，我们发出命令，以获取有关表的一些元数据信息。
			PRAGMA

*/



int main(void) {
    
    sqlite3 *db;
    char *err_msg = 0;
    
    int rc = sqlite3_open("test.db", &db);
    
    if (rc != SQLITE_OK) {
        
        fprintf(stderr, "Cannot open database: %s\n", 
                sqlite3_errmsg(db));
        sqlite3_close(db);
        
        return 1;
    }

    /*
		该命令为表中的每一列返回一行。
		结果集中的列包括列顺序号、列名、数据类型、列是否可以为 ，以及列的默认值。
		PRAGMA table_info(tableName)CarsNULL
		
    */
    char *sql = "PRAGMA table_info(Cars)";
        
    rc = sqlite3_exec(db, sql, callback, 0, &err_msg);
    
    if (rc != SQLITE_OK ) {
        
        fprintf(stderr, "Failed to select data\n");
        fprintf(stderr, "SQL error: %s\n", err_msg);

        sqlite3_free(err_msg);
        sqlite3_close(db);
        
        return 1;
    } 
    
    sqlite3_close(db);
    
    return 0;
}

int callback(void *NotUsed, int argc, char **argv, char **azColName) 
{
    
    NotUsed = 0;
    
    for (int i = 0; i < argc; i++) 
    {
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    
    printf("\n");
    
    return 0;
}










